Field
Embodiments presented herein generally relate to distributed computing. More specifically, embodiments presented herein provide techniques for allocating shared resources to a distributed key-value store.
Description of the Related Art
A distributed computer system includes software components located on multiple computers coupled to a network and which communicate and coordinate actions by passing messages to each other over the network. Each networked computer or node generally has its own memory and local data store.
Key-value stores are an effective way to manage data, as they are not based on relational tables and structured query languages. Essentially, a key-value store is a large dictionary. Providing the key-value store with a key allows the update or return of a value, where the value can be data of almost any type, thus making the key-value store adaptable to a variety of applications.
A distributed computer system often includes a file system, such as POSIX-compliant file system, for managing the data files accessible by the multiple computers or nodes in the distributed system. File systems, such as POSIX-compliant file systems, rely on metadata (information about the data in the file system) to find and modify data in the file system. The manner in which the distributed system manages the metadata determines the characteristics of the file system. Specifically, if it is desired that the file system have high availability, good scalability, and high performance, then the metadata subsystem for the file system should also have these same characteristics.
Thus, to have high availability, the metadata subsystem in the distributed computer system should be able to tolerate failure of a certain number of computers in the distributed system. To have good scalability, the metadata subsystem needs to adapt to handling a greater number of files and computer systems. To have good performance, operations on the metadata system needs to occur quickly, as the speed with which the metadata subsystem can be accessed determines in the large part the speed with which the data files can be accessed.